//
//  DualMediationMAXSplashManager.h
//  DualMediationSDK
//
//  Created by YeJary on 2025/1/15.
//

#import <Foundation/Foundation.h>
#import "DMAdDelegate.h"

#if __has_include(<UIKit/UIKit.h>)
#import <UIKit/UIKit.h>
#define UIKIT_AVAILABLE 1
#else
#define UIKIT_AVAILABLE 0
@class UIViewController;
#endif

#if __has_include(<AppLovinSDK/AppLovinSDK.h>)
#import <AppLovinSDK/AppLovinSDK.h>
#define APPLOVIN_SDK_AVAILABLE 1
#else
#define APPLOVIN_SDK_AVAILABLE 0
#endif

NS_ASSUME_NONNULL_BEGIN

@interface DualMediationMAXSplashManager : NSObject

@property (nonatomic, assign) id<DMAdDelegate> delegate;
@property (nonatomic, assign, readonly) BOOL isUserClosed;

/**
 * 获取开屏广告管理器单例
 * @return 开屏广告管理器实例
 */
+ (instancetype)sharedSplashManager;

/**
 * 展示开屏广告
 * 根据策略自动判断是否展示广告
 */
- (void)showSplash;

/**
 * 初始化开屏广告代理
 * 设置广告位ID并开始加载广告
 */
- (void)initSplashDelegate;

/**
 * 设置开屏广告禁用状态
 * @param isDisable YES=禁用，NO=启用
 */
- (void)setSplashAdDisable:(BOOL)isDisable;

/**
 * 检查开屏广告是否准备就绪
 * @return YES=已准备，NO=未准备
 */
- (BOOL)isSplashAdReady;

/**
 * 加载开屏广告
 * 如果广告未准备就绪，则重新加载
 */
- (void)loadSplash;

/**
 * 判断应用启动场景
 * @return 冷启动或热启动场景
 */
- (NSInteger)determineSplashScene;

/**
 * 根据配置判断是否应该展示开屏广告
 * @return YES=应该展示，NO=不应该展示
 */
- (BOOL)shouldShowSplashBasedOnConfig;

/**
 * 获取当前开屏场景字符串
 * @return 场景字符串（SCENE_SPLASH_COOL或SCENE_SPLASH_HOT）
 */
- (NSString *)getCurrentSplashScene;

@end

NS_ASSUME_NONNULL_END
